package cn.tedu.blog.api.pojo.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

@Data
@Accessors(chain = true)//支持链式set赋值功能
@AllArgsConstructor //自动生成包含全部参数的构造方法
@NoArgsConstructor //自动生成无参构造方法
//@Document是SpringDataES标记实体类的注解
//indexName指定关联的索引名称，运行时如果items索引不存在，SpringData会自动将他创建
@Document(indexName = "articles")
public class Item implements Serializable {

    // SpringData标记当前属性为ES的主键
    @Id
    private Long id;

    // SpringData标记title属性是text类型支持分词的,以及分词器
    @Field(type = FieldType.Text,
            analyzer = "ik_max_word",
            searchAnalyzer = "ik_max_word")
    private String title;
    /**
     * 文本内容
     */
    @Field(type = FieldType.Keyword,index = false)
    private String content;
    /**
     * 文章简介
     */
    @Field(type = FieldType.Text,
            analyzer = "ik_max_word",
            searchAnalyzer = "ik_max_word")
    private String brief;
    /**
     * 分类id
     */
    @Field(type = FieldType.Keyword,index = false)
    private Long categoryId;
    /**
     * 用户id
     */
    @Field(type = FieldType.Keyword,index = false)
    private Long userId;
    /**
     * 文章首图
     */
    @Field(type = FieldType.Keyword,index = false)
    private String viewPicture;
    /**
     * 收藏数
     */
    @Field(type = FieldType.Keyword,index = false)
    private Long favorCount;
    /**
     * 评论数
     */
    @Field(type = FieldType.Keyword,index = false)
    private Integer commentCount;
    /**
     * 文章阅读量
     */
    @Field(type = FieldType.Keyword,index = false)
    private Long viewCount;
    /**
     * 点赞量
     */
    @Field(type = FieldType.Keyword,index = false)
    private Long praiseCount;
    /**
     * 状态 0 未发部 1发布 2待发布
     */
    @Field(type = FieldType.Keyword,index = false)
    private  Integer status;
    /**
     * 是否原创 0 转载 1原创
     */
    @Field(type = FieldType.Keyword,index = false)
    private Integer isOriginal;

    /**
     * 是否推介 0否 1是
     */
    @Field(type = FieldType.Keyword,index = false)
    private Integer isRecommended;

    /**
     * 排序
     */
    @Field(type = FieldType.Keyword,index = false)
    private Integer sort;
    /**
     * 创建时间
     */
    @Field(type = FieldType.Keyword,index = false)
    private LocalDateTime gmtCreate;
    /**
     * 文章发布时间
     */
    @Field(type = FieldType.Keyword,index = false)
    private LocalDateTime gmtCreatePush;
    /**
     * 修改时间
     */
    @Field(type = FieldType.Keyword,index = false)
    private LocalDateTime gmtModified;

    /**
     * 分类名
     */
    @Field(type = FieldType.Keyword,index = false)
    private String categoryName;

    /**
     * 标签集合
     */
    @Field(type = FieldType.Keyword,index = false)
    private List<String> tags;

    /**
     * 标签名
     */
    @Field(type = FieldType.Keyword,index = false)
    private Integer tagId;
    /**
     * 标签名
     */
    @Field(type = FieldType.Keyword,index = false)
    private String tagName;

    /**
     * 查询起始位置
     */
    @Field(type = FieldType.Keyword,index = false)
    private Integer offset;
    /**
     * 查询数量
     */
    @Field(type = FieldType.Keyword,index = false)
    private Integer count;

}
